package cn.iocoder.yudao.module.trade.service.depositorderreturnlog;

import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;

import java.util.*;
import cn.iocoder.yudao.module.trade.controller.admin.depositorderreturnlog.vo.*;
import cn.iocoder.yudao.module.trade.dal.dataobject.depositorderreturnlog.DepositOrderReturnLogDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;

import cn.iocoder.yudao.module.trade.dal.mysql.depositorderreturnlog.DepositOrderReturnLogMapper;

import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.*;

/**
 * 退瓶记录 Service 实现类
 *
 * @author 管理员
 */
@Service
@Validated
public class DepositOrderReturnLogServiceImpl implements DepositOrderReturnLogService {

    @Resource
    private DepositOrderReturnLogMapper depositOrderReturnLogMapper;

    @Override
    public Long createDepositOrderReturnLog(DepositOrderReturnLogSaveReqVO createReqVO) {
        // 插入
        DepositOrderReturnLogDO depositOrderReturnLog = BeanUtils.toBean(createReqVO, DepositOrderReturnLogDO.class);
        depositOrderReturnLogMapper.insert(depositOrderReturnLog);
        // 返回
        return depositOrderReturnLog.getId();
    }

    @Override
    public void updateDepositOrderReturnLog(DepositOrderReturnLogSaveReqVO updateReqVO) {
        // 校验存在
        validateDepositOrderReturnLogExists(updateReqVO.getId());
        // 更新
        DepositOrderReturnLogDO updateObj = BeanUtils.toBean(updateReqVO, DepositOrderReturnLogDO.class);
        depositOrderReturnLogMapper.updateById(updateObj);
    }

    @Override
    public void deleteDepositOrderReturnLog(Long id) {
        // 校验存在
        validateDepositOrderReturnLogExists(id);
        // 删除
        depositOrderReturnLogMapper.deleteById(id);
    }

    private void validateDepositOrderReturnLogExists(Long id) {
        if (depositOrderReturnLogMapper.selectById(id) == null) {
            throw exception(DEPOSIT_ORDER_RETURN_LOG_NOT_EXISTS);
        }
    }

    @Override
    public DepositOrderReturnLogDO getDepositOrderReturnLog(Long id) {
        return depositOrderReturnLogMapper.selectById(id);
    }

    @Override
    public PageResult<DepositOrderReturnLogDO> getDepositOrderReturnLogPage(DepositOrderReturnLogPageReqVO pageReqVO) {
        return depositOrderReturnLogMapper.selectPage(pageReqVO);
    }

    @Override
    public void createDepositOrderReturnLogList(List<DepositOrderReturnLogRespVO> voList) {
        depositOrderReturnLogMapper.insertBatch(BeanUtils.toBean(voList, DepositOrderReturnLogDO.class));
    }

}